package MBMantenedorProd;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.event.RowEditEvent;

import EJBCrudProductos.EjbArrProdLocal;
import Modelo.Producto;

@ManagedBean
public class CRUDProducto {

	@EJB(name="EJBLocal", mappedName="EJBLocal")
	EjbArrProdLocal ejbArrProd;
	
	private Integer id;
	private String nombre;
	private Integer precio;
	private String descripcion;
	private String categoria;
	private Integer stock;
	
	private List<Producto> arrProd;
	
	public CRUDProducto(){}//constructor vacio
	
	@PostConstruct
	public void init(){
		arrProd = ejbArrProd.obtenerArreglo();
	}

	//****************************************************************Metodos del CRUD
	public void agregar(){
	    int idx = id;
	    if(ejbArrProd.consultar(idx) == null){
	        Producto p = new Producto(id,nombre,precio,descripcion,categoria,stock);
	        ejbArrProd.agregar(p);
	        id = null;
	        nombre= null;
	        precio= null;
	        descripcion= null;
	        categoria= null;
	        stock = null;
	        init();
	    }else{
	        id = null;
	        FacesMessage msg = new FacesMessage("Ya existe la ID: "+idx);  
            FacesContext.getCurrentInstance().addMessage("id", msg);  
	    }
		
	}
	
	public void eliminar(int id){
		ejbArrProd.eliminar(id);
		init();
	}
	
	//****************************************************************editar
	 public void onEdit(RowEditEvent event) {  
	        ejbArrProd.modificar(((Producto) event.getObject()));
	        FacesMessage msg = new FacesMessage("Producto "+((Producto) event.getObject()).getNombre()+" Editado");  
	        
	        FacesContext.getCurrentInstance().addMessage("", msg);  
	    }  
	      
	    public void onCancel(RowEditEvent event) {  
	        FacesMessage msg = new FacesMessage("Producto "+((Producto) event.getObject()).getNombre()+" NO Editado");  
	  
	        FacesContext.getCurrentInstance().addMessage("", msg);  
	    } 
	
	//****************************************************************Getter's & Setter's
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Integer getPrecio() {
		return precio;
	}

	public void setPrecio(Integer precio) {
		this.precio = precio;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	public Integer getStock() {
		return stock;
	}

	public void setStock(Integer stock) {
		this.stock = stock;
	}

	public List<Producto> getArrProd() {
		return arrProd;
	}

	public void setArrProd(List<Producto> arrProd) {
		this.arrProd = arrProd;
	}
	
	
	
	
}
